_t_y_p_e Specifies the data type of each coordinate in the array.
Symbolic constants GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, and
GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE are accepted. The initial value is GGGGLLLL____FFFFLLLLOOOOAAAATTTT.
_s_t_r_i_d_e Specifies the byte offset between consecutive normals. If _s_t_r_i_d_e
is 0- the initial value-the normals are understood to be tightly
packed in the array. The initial value is 0.
_p_o_i_n_t_e_r Specifies a pointer to the first coordinate of the first normal
in the array. The initial value is 0.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr specifies the location and data format of an array of
normals to use when rendering. _t_y_p_e specifies the data type of the
normal coordinates and _s_t_r_i_d_e gives the byte stride from one normal to
the next, allowing vertices and attributes to be packed into a single
array or stored in separate arrays. (Single-array storage may be more
efficient on some implementations; see ggggllllIIIInnnntttteeeerrrrlllleeeeaaaavvvveeeeddddAAAArrrrrrrraaaayyyyssss.) When a
normal array is specified, _t_y_p_e, _s_t_r_i_d_e, and _p_o_i_n_t_e_r are saved as
client-side state.
To enable and disable the normal array, call ggggllllEEEEnnnnaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee and
ggggllllDDDDiiiissssaaaabbbblllleeeeCCCClllliiiieeeennnnttttSSSSttttaaaatttteeee with the argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY. If enabled, the
normal array is used when ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss, ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt
is called.
Use ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss to construct a sequence of primitives (all of the same
type) from prespecified vertex and vertex attribute arrays. Use
ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt to specify primitives by indexing vertices and vertex
attributes and ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss to construct a sequence of primitives by
indexing vertices and vertex attributes.
NNNNOOOOTTTTEEEESSSS
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is available only if the GL version is 1.1 or greater.
The normal array is initially disabled and isn't accessed when
ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnntttt, ggggllllDDDDrrrraaaawwwwEEEElllleeeemmmmeeeennnnttttssss, or ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssss is called.
Execution of ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is not allowed between ggggllllBBBBeeeeggggiiiinnnn and the
corresponding ggggllllEEEEnnnndddd, but an error may or may not be generated. If an
error is not generated, the operation is undefined.
ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrr is typically implemented on the client side.
Since the normal array parameters are client-side state, they are not
saved or restored by ggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb. Use
ggggllllPPPPuuuusssshhhhCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb and ggggllllPPPPooooppppCCCClllliiiieeeennnnttttAAAAttttttttrrrriiiibbbb instead.
EEEERRRRRRRROOOORRRRSSSS
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is not an accepted value.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e is negative.
ggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY
ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE
ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE
ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvv with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR
On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems, do not enable or
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
between a call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ggggllllEEEEnnnnddddLLLLiiiisssstttt.
Instead, enable or disable before the call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt.
On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems it is particularly important to minimize the
amount of data transferred from the application to the graphics pipe,
since the host-to-pipe bandwidth limit can cause a performance
bottleneck. One way to reduce the amount of data transferred per vertex
is to use properly-aligned byte and short data types whenever possible.
Accordingly, the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems
has been optimized for vertex information packed into the following data
structures. (Note: v represents vertex coordinates, c represents color
components, n represents normal coordinates, and t represents texture